package cn.line5.module;

import java.util.List;

import cn.line5.seam.db.PageResult;

/**
 * <h1>模块管理数据库接口类</h1>
 * 
 * @author Liu,Xiaojun
 */
public interface ModuleDao {
	/**
	 * 查询子模块列表
	 */
	public List<ModuleVo> getModuleList(String parentId);
	
	/**
	 * 查询子模块分页列表
	 */
	public PageResult<ModuleVo> getModulePageList(String parentId,
			int currentPage);

	/**
	 * 查询模块信息
	 */
	public ModuleVo getModule(String moduleId);

	/**
	 * 获取同级模块最大ID
	 */
	public String getModuleMaxId(String parentId);

	/**
	 * 获取同级模块最大排序
	 */
	public Integer getModuleMaxSort(String parentId);

	/**
	 * 添加模块
	 */
	public Boolean addModule(ModuleVo vo);

	/**
	 * 修改模块
	 */
	public Boolean modifyModule(ModuleVo vo);

	/**
	 * 保存模块排序
	 */
	public Boolean saveModuleSort(ModuleVo vo);

	/**
	 * 删除模块及子模块
	 */
	public Boolean deleteModule(String moduleId);

	/**
	 * 删除模块下的功能
	 */
	public Boolean deleteFunctionByModule(String moduleId);

	/**
	 * 删除模块下的功能点
	 */
	public Boolean deletePointByModule(String moduleId);

	/**
	 * 获取模块下功能列表
	 */
	public List<ModuleFunctionVo> getFunctionList(String moduleId);

	/**
	 * 获取模块下功能分页列表
	 */
	public PageResult<ModuleFunctionVo> getFunctionPageList(String moduleId,
			int currentPage);

	/**
	 * 获取功能信息
	 */
	public ModuleFunctionVo getFunction(String functionId);

	/**
	 * 获取同模块下功能最大ID
	 */
	public String getFunctionMaxId(String moduleId);

	/**
	 * 获取同模块下功能最大排序
	 */
	public Integer getFunctionMaxSort(String moduleId);

	/**
	 * 添加功能
	 */
	public Boolean addFunction(ModuleFunctionVo vo);

	/**
	 * 修改功能
	 */
	public Boolean modifyFunction(ModuleFunctionVo vo);

	/**
	 * 保存功能排序
	 */
	public Boolean saveFunctionSort(ModuleFunctionVo vo);

	/**
	 * 删除功能
	 */
	public Boolean deleteFunction(String functionId);
	
	/**
	 * 获取功能下功能点列表
	 */
	public List<ModuleFunctionPointVo> getPointList(String functionId);
	
	/**
	 * 获取所有功能点列表
	 */
	public List<ModuleFunctionPointVo> getPointList();

	/**
	 * 获取功能下功能点分页列表
	 */
	public PageResult<ModuleFunctionPointVo> getPointPageList(String functionId,
			int currentPage);

	/**
	 * 获取功能点信息
	 */
	public ModuleFunctionPointVo getPoint(Integer pointId);

	/**
	 * 获取同功能下功能最大排序
	 */
	public Integer getPointMaxSort(String functionId);

	/**
	 * 添加功能点
	 */
	public Boolean addPoint(ModuleFunctionPointVo vo);

	/**
	 * 修改功能点
	 */
	public Boolean modifyPoint(ModuleFunctionPointVo vo);

	/**
	 * 保存功能点排序
	 */
	public Boolean savePointSort(ModuleFunctionPointVo vo);
	
	/**
	 * 删除功能点
	 */
	public Boolean deletePoint(Integer pointId);
}
